package com.zp.self.module.level_4_算法练习.脑筋急转弯;

/**
 * @author By ZengPeng
 */
public class 力扣_292_Nim游戏 {
    //测试
    public static void main(String[] args) {

        System.out.println(new 力扣_292_Nim游戏().canWinNim(5));
        System.out.println(new 力扣_292_Nim游戏().canWinNim(6));
        System.out.println(new 力扣_292_Nim游戏().canWinNim(7));
        System.out.println(new 力扣_292_Nim游戏().canWinNim(8));
    }

    /**
     * 题目：你和你的朋友，两个人一起玩Nim 游戏：
     *
     * 桌子上有一堆石头。
     * 你们轮流进行自己的回合，你作为先手。
     * 每一回合，轮到的人拿掉1 - 3 块石头。
     * 拿掉最后一块石头的人就是获胜者。
     * 假设你们每一步都是最优解。请编写一个函数，来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢，返回 true；否则，返回 false 。
     *

     *
     * 分析：
     *      1.为4 8 12 会输
     *       f(4) =  f(1)+f(3) ,f(2)+f(2),f(3)+f(1)
     *       f(5) =  f(1)+f(4) 对面会输，自己赢
     *       f(6) =  f(2)+f(4) 对面会输，自己赢
     *       f(7) =  f(3)+f(4) 对面会输，自己赢
     *       f(8) =  f(1)+f(7) ,f(2)+f(6),f(3)+f(5) ;f5\6\7先手赢
     *
     * 边界值 & 注意点：
     *      1.
     **/
    public boolean canWinNim(int n) {
        return n%4!=0;
    }
}
